import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.ListIterator;

public class Test {
    public static void main(String[] args) {
        List<Integer> list = new ArrayList<>();
        list.add(1);
        list.add(20);
        list.add(9);
        list.add(5);
        list.add(4);
        //Arraylist的遍历
        //1、
        for (int i = 0; i < list.size(); i++) {
            System.out.print(list.get(i)+" ");
        }
        System.out.println();
        //2、
        for (Integer x:list){
            System.out.print(x+" ");
        }
        System.out.println();
        //3、
        Iterator<Integer> iterator = list.iterator();
        while(iterator.hasNext()){
            System.out.print(iterator.next()+" ");
        }
        System.out.println();
        //4、
        ListIterator listIterator = list.listIterator();
        while(listIterator.hasNext()){
            System.out.print(listIterator.next()+" ");
        }
        System.out.println();
        //5、从后往前遍历
        ListIterator listIterator1 = list.listIterator(list.size());
        while(listIterator1.hasPrevious()){
            System.out.print(listIterator1.previous()+" ");
        }
        System.out.println();
    }
    public static void main2(String[] args) {
        ArrayList<Integer> list = new ArrayList<>();
        list.add(1);
        list.add(2);
        list.add(3);
        System.out.println(list);
        //截取list[0,2)的部分
        //在list上截取，list1和list指向同一个对象，因此修改list1的值同时也会修改list的
        List<Integer> list1 = list.subList(0,2);
        list1.set(0,188);
        //Arraylist中重写了toString方法
        System.out.println(list);
        System.out.println(list1);
    }
    public static void main1(String[] args) {
        //创建了一个存放整数类型的顺序表并初始化了15个空间
        ArrayList<Integer> list = new ArrayList<>(15);
        ArrayList<Integer> list1 = new ArrayList<>();
        //在第一次add分配大小为10的内存空间，扩容按照1.5倍的方式进行扩容，扩容的最大容量时int的最大值
        list1.add(10);
        list1.add(5);
        list1.add(8);
        list1.add(99);
        list1.add(99);
        //删除下标为2的元素
        list1.remove(2);
        System.out.println(list1);
        //删除第一个value为99的元素
        list1.remove(new Integer(99));
        System.out.println(list1);
        //获取0下标的元素
        System.out.println(list1.get(0));
        //修改0下标的元素为99
        list1.set(0,99);
        System.out.println(list1);
        //清空顺序表
        list1.clear();
    }
}
